home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
fdimg
/
oh!.2hd
/
OH!DEN_B.LZH
/
TOOLS
/
DC_VIEW
/
DROPICON.C
< prev
next >
Wrap
Text File
|
1995-03-20
|
3KB
|
90 lines
/******************************************************************************
* dropicon.c: アイコンのドロップ処理
******************************************************************************
*
*
*/
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <stat.h>
#include <io.h>
#include <jfctype.h>
#include <doslib.h>
#include <event.h> /* イベントマンを利用するときに必要 */
#include <sxgraph.h> /* グラフ系マネージャを利用するときに必要 */
#include <window.h> /* ウィンドウマンを利用するときに必要 */
#include <dialog.h> /* ダイアログマンを利用するときに必要 */
#include <task.h> /* タスクマンを利用するときに必要 */
#include "DC.h" /* このプログラム固有のヘッダファイル */
/******************************************************************************
* dropIcon(): アイコンのドロップ処理
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void dropIcon(ComVal *pcv)
{
int errCode, len;
Drag *dragPtr; /* ドラッグポインタ */
Cell *pcell; /* セルレコードへのポインタ */
IcState *pis; /* アイコン管理レコードへのポインタ */
char fWork[TS_NAMEMAX], ext[TS_NAMEMAX];
/* ドラッグポインタを取得する */
errCode = TSGetDrag(&dragPtr);
if (errCode < 0)
/* ドラッグレコードが無い */
return;
MMHdlLock(dragPtr->cellList); /* セルリストへのハンドルをロックする */
pcell = *dragPtr->cellList; /* セルレコードへのポインタを取得する */
TSHideDrag(); /* ラバーバンドを消去する */
/* セルレコードの情報の種類がアイコン管理レコード(上位ワードが'FS')
か? */
if (HIWORD(pcell->kind) == 'FS') {
/* アイコンは1つ(ドラッグレコードのセルリストの長さがアイコン
管理レコードを含むセルレコードの長さと同一の場合)か? */
if (dragPtr->size == sizeof(IcState) + 8 ) {
/* アイコン管理レコードへのポインタを取得する */
pis = (IcState *) pcell->data;
/* ファイルの属性をチェックする */
if ((pis->attrib & ATTRMASK) == TS_ARCH) {
/* アイコンのフルパスを取得する */
len = TSISRecToStr(
pis, /* アイコン管理レコード */
fWork); /* パス名格納ポインタ */
stcgfe(ext,fWork);
if (len >= 0) {
/* ドラッグを終了する */
TSEndDrag(TS_FINISH);
/* データ読み込み */
if (GetData(pcv, fWork)) {
drawGraph(pcv, 0);
} else {
pcv->errorCode = 1;
}
/* エラーが発生したか? */
if (pcv->errorCode != 0) {
/* エラーダイアログを表示する */
DMError(D_CONFIRM,"エラーが発生しました!");
pcv->errorCode = 0;
}
} else /*ファイル名の取得に失敗した */
/* アイコンを元の位置にはじき飛ばして
終了する */
TSEndDrag(TS_PUTBACK);
} else /* ファイルアイコン以外の場合 */
/* アイコンを元の位置にはじき飛ばして終了する */
TSEndDrag(TS_PUTBACK);
} else
/* アイコン2つ以上か他のドラッグレコードだったら
アイコンを元の位置にはじき飛ばして終了する */
TSEndDrag(TS_PUTBACK);
}
/* セルリストへのハンドルのロックを解除する */
MMHdlUnlock(dragPtr->cellList);
}
STR@ = EdEV 3.00 <